![利用可能なAZをワンライナーで取得してみた](https://devio2023-media.developers.io/wp-content/uploads/2014/05/aws_icon-awscli.png)
利用可能なAZをワンライナーで取得してみた
ウィスキー、シガー、パイプをこよなく愛する大栗です。 1年以上前からAWSを使用されている方は、東京リージョンでEC2を起動する時にAZを3個から選択できるのではないでしょうか。しかし、この中の1個のAZは新機能が提供されておらず、旧世代のEC2インスタンスしか使用できず、EBSもMagneticのみの提供となっています。 そのため、できる限り早く新機能が提供されていないAZから、別の利用可能なAZへ移行すべきです。
AZはAWSアカウント毎にマッピングが異なるため、自分のアカウントのap-northeast-1aと隣の人のap-northeast-1aが別の可能性があります。管理しているアカウントが多いと利用可能なAZを一つ一つ確認するのは手間なのでワンライナーで利用可能なAZを取得できるようにしてみました。 なお、確認環境はAmazon Linux AMI 2014.09です。
やってみる
aws ec2 describe-regions --region ap-northeast-1 --query "Regions[*].RegionName[]" --output text | \ tr -d "\n" | xargs -I'{}' -d"\t" -n 1 -P 1 aws rds describe-orderable-db-instance-options --region '{}' \ --engine mysql --max-items 1 --query "OrderableDBInstanceOptions[0].AvailabilityZones[*].Name"
少し解説をすると、最初に"aws ec2 describe-regions"でリージョン一覧を取得します。次に改行を取っていますが、次のxargsで具合が悪くなる為です。最後にxargsでリージョン毎に"aws rds describe-orderable-db-instance-options"を実行してRDSが起動できるAZを取得しました。 結果は、以下の様になります。
[ "eu-central-1a", "eu-central-1b" ] [ "sa-east-1a", "sa-east-1b" ] [ "ap-northeast-1a", "ap-northeast-1c" ] [ "eu-west-1a", "eu-west-1b", "eu-west-1c" ] [ "us-east-1a", "us-east-1b", "us-east-1c" ] [ "us-west-1a", "us-west-1c" ] [ "us-west-2a", "us-west-2b", "us-west-2c" ] [ "ap-southeast-2a", "ap-southeast-2b" ] [ "ap-southeast-1a", "ap-southeast-1b" ]
まとめ
これで、今後利用しているAZが分かりましたので、今度はAZの移行計画を考える番ですね。